/* 
    封装一个设置cookie的方法
    参数：
        key: 必填
        value: 必填
        expires: 选填, 默认以分钟为单位的时间
            分钟：10==》10*60*1000
            小时：10==》10*60*60*1000
            天数：2==》2*24*60*60*1000
*/

function setCookie(key, value, expires) {
    //key是你自己设置的名字
    if (!key) {
        throw Error("key是必填的参数");
    }
    //value是你想要存储到本地的值
    if (!value) {
        throw Error("value是必填的参数");
    }

    if (!expires) {
        // 说明有过期时间
        // path 设置cookie存储的位置
       // / 表示存储在根目录下面
      // 如果不设置的时候 文件再哪个文件夹中 ，cookie设置在那个文件夹
     // 文件夹外面是访问不到文件夹中设置cookie
        document.cookie = `${key}=${value};path=/`;
        return;
    }

    // 设置过期时间
    //new Date()得到当前的时间
    //getTime（）方法可返回距 1970 年 1 月 1 日之间的毫秒数。
    let date = new Date();
    let time = date.getTime() - 8 * 60 * 60 * 1000 + expires * 60 * 1000;
    date.setTime(time);

    // path 设置cookie存储的位置
    // / 表示存储在根目录下面
    // 如果不设置的时候 文件再哪个文件夹中 ，cookie设置在那个文件夹
    // 文件夹外面是访问不到文件夹中设置cookie
    document.cookie = `${key}=${value};expires=${date};path=/`;
}


/* 
    封装一个获取cookie的函数
    参数：
        key选填的参数

    返回值：
        如果有传递key的时候 那么就把这个key对应的值返回
        如果没有key的时候 那么就把所欲的cookie都返回
*/

function getCookie(key) {
    // login=1; username=老田
    //document.cookie 属性来创建 、读取、及删除 cookie
    let cookie = document.cookie;

    // 把数据处理成对象 {username:'老田',login:1}
    let arr = cookie.split("; ");
    // ['login=1', 'age=68', 'username=老田']
    let obj = {};

    arr.forEach((item) => {
        // 解构
        let [keys, values] = item.split("=");
        obj[keys] = values;
    });

    // 如果存在key 就把key对应的值返回
    // 否则就返回整个对象
    if (key) {
        return obj[key];
    }
    return obj;
}
